[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Int 15 Fn 1016  - Topview - "isobj" - Verify Object Handle                 [Q]

   AX = 1016h
   ES:DI = possible object handle

Return: BX = FFFFh if ES:DI is a valid object handle
        0000h if ES:DI is not

Note:  under DESQview versions prior to 2.50, an object handle is always a
     pointer to the object; for versions 2.50 and up, only task handles
     are always pointers (other handles may consist of a unique object
     number and offset into DESQview's common memory)

See Also: AX=DE14h,AX=DE2Bh,AX=DE2Ch

Format of object:
Offset Size    Description
 00h   WORD    offset in common memory of previous object of same type
 02h   WORD    offset in common memory of next object of same type
 04h   WORD    signature FEDCh (DV 2.42-)
       signature FEDCh or object number (DV 2.50+)
 06h   WORD    object type
       00h window/task
       01h mailbox
       02h keyboard
       03h timer
       04h pointer
       05h panel
       06h objectq
 08h   DWORD   object handle to return to caller
 0Ch   DWORD   canonicalized object address (segment = common memory)
 10h   WORD    offset in common memory of owning task
       (0000h for unowned OBJECTQs)
 12h   WORD    mapping context
       offset in common memory of mapping context record (see below)
   remainder varies by object type and DESQview version
---v2.42 keyboard object---
 14h   WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
       bit 15: keyboard opened
 16h  4 BYTEs  ???
 1Ah   WORD    priority in OBJECTQ???
 1Ch   ...
 25h   WORD    offset in common memory of ??? task
 27h  4 BYTEs  ???
---v2.42 objectq object---
 14h   WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
       bit 15: OBJECTQ opened
 16h  2 BYTEs  ???
 18h   WORD    offset in common memory of ??? task
 1Ah  6 BYTEs  ???
---v2.42 mailbox object---
 14h   WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
       bit 15: mailbox opened
 1Ah   WORD    priority in OBJECTQ???
 1Ch  6 BYTEs  ???
 22h   WORD    offset in common memory of mailbox name (counted string)
       0000h if no name
     <= 5 BYTEs ???
---v2.22-2.42,2.52,2.60 window/task object---
 14h   BYTE    00h window, 01h task
 15h   BYTE    internal (not Switch menu) window number???
 16h   BYTE    internal (not Switch menu) window number???
 17h   WORD    segment of internal window record (see below)
 19h  2 BYTEs  ???
 1Bh   BYTE    cursor row
 1Ch   BYTE    cursor column
 1Dh   BYTE    visible window origin, row
 1Eh   BYTE    visible window origin, column
 1Fh   BYTE    window height (logical)
 20h   BYTE    window width (logical)
 21h   BYTE    window position, row
 22h   BYTE    window position, column
 23h   BYTE    window height (visible)
 24h   BYTE    window width (visible)
 25h   BYTE    row of top of frame (or window if unframed)
 26h   BYTE    column of left of frame (or window if unframed)
 27h   BYTE    window height (physical, including frame)
 28h   BYTE    window width (physical, including frame)
 29h   BYTE    unzoomed visible origin, row (00h before first zoom)
 2Ah   BYTE    unzoomed visible origin, column (00h before first zoom)
 2Bh   BYTE    unzoomed window position, row (00h before first zoom)
 2Ch   BYTE    unzoomed window position, column (00h before first zoom)
 2Dh   BYTE    unzoomed window height (00h before first zoom)
 2Eh   BYTE    unzoomed window width (00h before first zoom)
       unzoomed parameters above are updated when window is zoomed
       to full screen
 2Fh   BYTE    ??? initially logical window height
 30h   BYTE    ??? initially logical window width
 31h  2 BYTEs  ???
 33h   BYTE    minimum height of window
 34h   BYTE    minimum width of window
 35h   BYTE    maximum height of window
 36h   BYTE    maximum width of window
 37h  3 BYTEs  ???
 3Ah  8 BYTEs  window frame characters: ul,ur,ll,lr,t,b,l,r
 42h 24 BYTEs  attributes???
 5Ah  8 BYTEs  window frame characters: ul,ur,ll,lr,t,b,l,r
 62h  3 BYTEs  ???
 65h   BYTE    ??? bitflags
 66h   BYTE    bit 0: window is zoomed
 67h   BYTE    ???
 68h   WORD    offset in common memory of window name or 0000h if untitled
 6Ah   WORD    length of window name
 6Ch  2 BYTEs  ???
 6Eh   WORD    offset of logical cursor in window (in character cells)
 70h   DWORD   pointer to field table for window
 74h   BYTE    ???
 75h  2 BYTEs  ???
 77h   BYTE    number of last-visited field
 78h   DWORD   pointer to field table entry for last-visited field
 7Ch  3 BYTEs  ???
 7Fh   BYTE    select field marker character
 80h   BYTE    ??? bit flags
       bit 0: allow ECh window stream opcode to change reverse logattr
       bit 1: alternate field processing mode selected
 81h   BYTE    ???
 82h   DWORD   notification function (manager stream opcode 8Ah)
       no notification if segment = 0000h
 86h   DWORD   notification argument (manager stream opcode 8Bh)
 8Ah   WORD    offset in common memory of ??? window object or 0000h
 8Ch   WORD    offset in common memory of ??? window object or 0000h
 8Eh   WORD    offset in common memory of ??? window object or 0000h
 90h   BYTE    ??? bitflags
 91h   BYTE    ???
 ---task object only
 92h   BYTE    bit flags (bits 0-4)
 93h   BYTE    character for ??? (default 20h)
 94h   BYTE    ??? flag
 95h   WORD    offset in common memory of ???
 97h  2 BYTEs  ???
 99h   WORD    ???
 9Bh   BYTE    ??? bit flags
       bit 3: ???
       bit 6: perform protected-attribute processing on select fields
 9Ch   BYTE    ???
 9Dh   WORD    offset in common memory of current register save record
       (see below).  No register save record in use if < 01C0h
 9Fh   WORD    offset in common memory of task's keyboard object
 A1h   WORD    offset in common memory of task's OBJECTQ object
 A3h   WORD    offset in common memory of task's mailbox object
 A5h   WORD    semaphore: FFFFh if on user stack, else on task's private stack
 A7h   DWORD   user's SS:SP
 ABh   WORD    task's private SP (SS read from offset 0Ah)
 ADh  6 BYTEs  ???
 B3h   BYTE    ??? bit flags
       bit 0: run in foreground only
 B4h   BYTE    ???
 B5h   BYTE    ??? bitflags
 B6h   BYTE    task status (see AX=DE2Ch)
 B7h  9 BYTEs  ???
 C0h   WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
 C2h   WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
 C4h  2 BYTEs  ??? (0000h)
 C6h   WORD    segment of keyboard buffer for task
 C8h   WORD    offset in common memory of ??? keyboard object
 CAh   BYTE    ???
---v2.22-2.42
 CBh   WORD    offset in common memory of ??? object
 CEh   BYTE    ??? flag
 CFh   WORD    offset in common memory of default notify window for task
       or 0000h if none
 D1h  4 BYTEs  ???
 D5h   BYTE    window number on Switch Window menu
 D6h  5 BYTEs  ???
 DBh   WORD    offset in common memory of ??? object
 DDh  2 BYTEs  ???
 DFh   WORD    API level for task
 E1h   WORD    offset in common memory of object task is waiting on if task
       status is 'waiting', else 0000h
 E7h   WORD    segment of ???
 E9h 4 BYTEs   ???
 EDh   WORD    EMS handle of virtualization buffer, 0000h if no virtualization
 F1h 12 BYTEs  ???
 FBh   WORD    ???
 FDh   BYTE    ???
 FFh 12 BYTEs  ???
10Bh   DWORD   pointer to process record (see below)
10Dh 10 BYTEs  ???
119h   DWORD   SS:SP for ???
11Dh  4 BYTEs  ???
121h   DWORD   pointer to ???
125h 25 BYTEs  ???
13Eh   DWORD   pointer to ??? in system memory
---v2.22
142h  3 BYTEs  ???
145h       task's default keyboard object
---v2.42
142h   DWORD   pointer to first task instance data record in system memory
148h   DWORD   pointer to last task instance data record in system memory
       (see below)
14Ah   BYTE    ???
14Dh 42 BYTEs  task's default keyboard object
177h 32 BYTEs  task's ObjectQ object
197h 41 BYTEs  task's default mailbox object
1C0h 24 BYTEs  first register save record
450h   --  default top of private stack
---v2.52 (probably all DV/X)
Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  0000h even when waiting.
---v2.60
 CBh   WORD    ??? (added in 2.50 - rest is same as 2.42)
 CDh   WORD    offset in common memory of ??? object
 D0h   BYTE    ??? flag
 D1h   WORD    offset in common memory of default notify window for task
       or 0000h if none
 D3h  4 BYTEs  ???
 D7h   BYTE    window number on Switch Window menu
 D8h  5 BYTEs  ???
 DDh   WORD    offset in common memory of ??? object
 DFh  2 BYTEs  ???
 E1h   WORD    API level for task
 E3h   WORD    If status at B6h=waiting, offset in common memory of object
       that task is waiting on, else 0000h. (Task with CPU also
       has 0000h here)
 E9h   WORD    segment of ???
 EBh 4 BYTEs   ???
 EFh   WORD    EMS handle of virtualization buffer, 0 if no virtualization
 F3h 12 BYTEs  ???
 FDh   WORD    ???
 FFh   BYTE    ???
101h  8 BYTEs  ???
109h   DWORD   pointer to process record in system memory
10Dh 14 BYTEs  ???
11Bh   DWORD   SS:SP for ???
11Fh  4 BYTEs  ???
123h   DWORD   pointer to ???
127h 25 BYTEs  ???
140h   DWORD   pointer to ??? in system memory
144h   DWORD   pointer to first task instance data record in system memory
148h   DWORD   pointer to last task instance data record in system memory
        (from INT 15/AX=DE27h, see below)
14Ch   BYTE    ???
14Eh 42 BYTEs  task's default keyboard object
179h 32 BYTEs  task's ObjectQ object
199h 41 BYTEs  task's default mailbox object
1C2h 24 BYTEs  first register save record
452h   --  default top of private stack

Format of Register Save Record:
Offset Size    Description
 00h   WORD    AX
 02h   WORD    BX
 04h   WORD    CX
 06h   WORD    DX
 08h   WORD    DI
 0Ah   WORD    SI
 0Eh   WORD    DS
 10h   WORD    ES
 12h   DWORD   return address
 16h   WORD    original flags

Format of mapping context record:
Offset Size    Description
 00h   WORD    lowest segment in process's memory
       (often start of system memory chain)
 02h   WORD    size of process's memory in paragraphs
 04h   BYTE    flag: 00h if process swapped out, 01h otherwise
 05h   BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
 06h  2 BYTEs  ???
 08h   WORD    EMS handle if in EMS, else 0
 0Ah  2 BYTEs  ??? (nonzero if system memory resides in shared mem???)
 0Ch   WORD    segment of system memory block that contains process record,
       referenced from segment of start of system memory chain
 0Eh   BYTE    ???
 0Fh   WORD    size of system memory block that contains process record
       and DOS memory in paragraphs
 11h   BYTE    bit flags
       Bit 0: Swapped out???
       Bit 1: ???
       Bit 2: Swapped out???
 12h   BYTE    ???
 13h   BYTE    reference count
 ---v2.31
 14h 10 BYTEs  ???
 1Eh   WORD    segment of process record
 20h  2 BYTEs  ???
 22h   WORD    segment of ???  (in first free system memory block???)
 24h   WORD    segment of end of system memory chain
 26h   WORD    segment of start of system memory chain
 28h  8 BYTEs  ???
 2Ah   DWORD   pointer to ??? (process record???)
 2Dh 10 BYTEs  ???
 37h   BYTE    lowest interrupt vector to save on context switch
 38h   BYTE    highest interrupt vector to save on context switch
 39h   WORD    offset in common memory of main task with this context
 3Ah 12 BYTEs  ???
 46h   BYTE    internal mapping context number
 47h 12 BYTEs  ???
 ---v2.5x-2.60
 14h  6 BYTEs  ???
 1Ah   WORD    segment of process record
 1Ch  2 BYTEs  ???
 1Eh   WORD    segment of first free system memory block
 20h   WORD    segment of start of system memory chain
 22h   WORD    segment of end of system memory chain
 24h 8 BYTEs   ???
 2Ch   DWORD   pointer to ??? (1 segment into process record???)
 30h 3 BYTEs   ???
 33h   WORD    Offset in common memory of main task with this context
 35h 7 BYTEs   ???
 3Ch   BYTE    internal mapping context number
 3Dh 14 BYTEs  ???

.NG limit reached, continued in next section...

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson